package org.example.codegenerate.util;


import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

@Slf4j
public class Utila {
    //private static final Logger log = LoggerFactory.getLogger(org.jeecgframework.codegenerate.generate.util.a.class);
    public static List<String> lista = new ArrayList();
    public static List<String> listftl = new ArrayList();
    static {
        lista.add(".svn");
        lista.add("CVS");
        lista.add(".cvsignore");
        lista.add(".copyarea.db");
        lista.add("SCCS");
        lista.add("vssver.scc");
        lista.add(".DS_Store");
        lista.add(".git");
        lista.add(".gitignore");
        listftl.add(".ftl");
    }
    public Utila() {
    }

    public static List<File> getSortFiles(File file) throws IOException {
        ArrayList arrayList = new ArrayList();
        getvalidfilesfromDir(file, (List)arrayList);//如果这个文件不是隐藏的，不是目录，也不在这个枚举类中，那么加入到文件的所有列表中
        Collections.sort(arrayList, new Comparator<File>() {
            @Override
            public int compare(File file1, File file2) {
                return file1.getAbsolutePath().compareTo(file2.getAbsolutePath());
            }
        });
        return arrayList;
    }
    //递归获取某个目录下的所有文件，获取List<File>
    public static void getvalidfilesfromDir(File file, List<File> fileList) throws IOException {
        log.debug("---------dir------------path: " + file.getPath() + " -- isHidden --: " + file.isHidden() + " -- isDirectory --: " + file.isDirectory());
        if (!file.isHidden() && file.isDirectory() && !d(file)) {//如果这个文件不是隐藏的，不是目录，也不在这个枚举类中，那么加入到文件的所有列表中
            File[] var2 = file.listFiles();

            for(int var3 = 0; var3 < var2.length; ++var3) {
                getvalidfilesfromDir(var2[var3], fileList);
            }
        } else if (!e(file) && !d(file)) {
            fileList.add(file);
        }

    }
    //返回 default\one\java\${bussiPackage}\${entityPackage}\controller\${entityName}Controller.javai，把文件前面的绝对位置去掉了
    public static String getvalidfilesfromDir(File file1, File file2) {
        if (file1.equals(file2)) {
            return "";
        } else {
            return file1.getParentFile() == null ? file2.getAbsolutePath().substring(file1.getAbsolutePath().length()) : file2.getAbsolutePath().substring(file1.getAbsolutePath().length() + 1);
        }
    }

    public static boolean b(File file) {
        return file.isDirectory() ? false : getvalidfilesfromDir(file.getName());
    }

    public static boolean getvalidfilesfromDir(String var0) {
        return !StringUtils.isBlank(b(var0));
    }

    public static String b(String var0) {
        if (var0 == null) {
            return null;
        } else {
            int var1 = var0.indexOf(".");
            return var1 == -1 ? "" : var0.substring(var1 + 1);
        }
    }

    public static File c(String var0) {
        if (var0 == null) {
            throw new IllegalArgumentException("file must be not null");
        } else {
            File var1 = new File(var0);
            c(var1);
            return var1;
        }
    }

    public static void c(File file) {
        if (file.getParentFile() != null) {
            file.getParentFile().mkdirs();
        }

    }

    private static boolean d(File file) {
        for(int i = 0; i < lista.size(); ++i) {
            if (file.getName().equals(lista.get(i))) {
                return true;
            }
        }

        return false;
    }

    private static boolean e(File file) {
        for(int i = 0; i < listftl.size(); ++i) {
            if (file.getName().endsWith((String) listftl.get(i))) {
                return true;
            }
        }

        return false;
    }


}
